This invention relates to multiprocessor architectures and more specifically to managing the increase in load that would be incurred by a processor due to the assumption of running an additional process.
Some applications demand high reliability in a real-time environment such as telecommunications, financial transactions, etc. Such applications are typically supported by multiple processors. In one high reliability architecture, the processors are grouped into pairs where each processor in a pair is engineered to have sufficient spare capacity to take over the processes from its mate should the mate processor fail. For each active primary process running on one processor in the pair, the other processor in the pair will have a backup copy that can be activated in the case of failure of its mate. The load of processes supported by the pair of processors is engineered so that each processor has sufficient capacity to handle the additional load of its mate in the event of a processor failure. Although this arrangement is effective in providing high reliability, it is not very efficient with regard to the utilization of processor resources since each processor in the pair must be capable of assuming all of the active processes handled by both processors in the event of a processor failure.
Another type of backup is provided by the so-called “N+1” approach. In an environment in which N active processors are required for handling the workload, an extra processor, i.e. the “+1” processor, is utilized as a spare to provide a backup to take over for a failed one of the N processors. In this system all of the responsibilities that were being handled by the failed n processor are transferred to the +1 processor. Thus, the +1 processor must have sufficient capacity to handle the load of the heaviest loaded n processor. From a perspective of utilization of processor resources, this approach is obviously more efficient than the above-described pairing approach. However, the +1 processor cannot be made available on a real-time basis since it cannot simultaneously carry a backup copy of the processes running on all of the N processors, and since it cannot be predicted which of the N processors will fail. Therefore, this approach is best suited for applications in which only non-real-time backup is required.